<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>this</title>
</head>
<body>
<script>

    // var obj = {
    //     a : function(){
    //         console.log(this.name);
    //     },
    //     name : 'abc'
    // };
    // obj.a();


    // var name = "222";
    // var a = {
    //     name : 111,
    //     say : function () {
    //         console.log(this.name);
    //     }
    // };
    // var fun = a.say;//将say函数赋给fun
    // fun();//fun函数在全局执行 this 指向全局  所以 打印 222
    // a.say();// a 对象调用say函数 所以 this 指向a对象 所以打印 111
    // var b = {
    //     name : "333",
    //     say : function (fun) {
    //         fun();
    //     }
    // };
    // b.say(a.say);//222
    // b.say = a.say;
    // b.say();//333



//分析：
    var name = "222";
    var a = {
        name : 111,
        say : function () {
            console.log(this.name);
        }
    };
    var b = {
        name : "333",
        say : function (fun) {
            fun();
        }
    };
    b.say(a.say);//222
/*
a.say = function () {console.log(this.name);}传到b对象中的say方中
变为：
    say : function (a.say) {
        //this 是指向 b对象的
            //a.say();
            //a 对象的 say函数 直接在 b对象中的 say函数 中直接执行 这里的this是指向全局的
            //(也就是没人.ta，所以this指向全局)
            (function () {
                console.log(this.name);//
            })()
        }
 */
</script>

</body>
</html>
